package com.southwind.springboottest.study.JavaIO;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.PrintWriter;

/**
 * @description：TODO java读写锁
 * @author： HXG
 * @create： 2023/12/15 16:01
 */
public class IODemo {
    /**
     * 使用PrintWriter，写入字节
     * @param outputDir 输出文件目录
     * @param filename 文件名称
     * @param bytes 文件内容字节数组
     */
    private static void writeToFile(File outputDir, String filename, byte[]
            bytes) {
        try {
            File outFile = new File(outputDir, filename);
            if (outFile.exists()) {
                outFile.delete();
            }
            outFile.createNewFile();
            PrintWriter printWriter = new PrintWriter(new
                    FileOutputStream(outFile));
            for (int j = 0; j < bytes.length; j++) {
                //将一个字节的无符号整数值转换为对应的十六进制字符串。
                // bytes[j] 是一个字节数组中的一个元素，& 0xff 是为了确保将字节的高位清零，
                // 得到无符号整数值。然后，Integer.toHexString() 方法将这个无符号整数值转换为对应的十六进制字符串表示。
                printWriter.print(Integer.toHexString(bytes[j] & 0xff));
                if (j < bytes.length - 1) {
                    printWriter.print("\n");
                }
            }
            printWriter.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * FileWriter写文件，写入字符串
     * @param fftFile 输出文件
     * @param nums 写入的字符
     */
    private static void writeToFileByChar(File fftFile,char[] nums) {
        try {
            FileWriter fileWriter = new FileWriter(fftFile, true);
            for (int j = 0; j < nums.length; j++) {
                fileWriter.write(String.valueOf(nums[j]));
                if ((j + 1) % (128) == 0) {
                    fileWriter.write("\r\n");
                    fileWriter.flush();
                } else {
                    fileWriter.write(",");
                }
            }
            fileWriter.flush();
            fileWriter.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
